#include <iostream>
#include <vector>
#include <string>
#include <unordered_map>
#include <queue>

using namespace std;

//int main()
//{
//	int numofask;
//	int tmp;
//	long long int a, b, c;
//	cin >> numofask;
//	vector<long long int> ret(numofask, 0);
//	while (numofask--)
//	{
//		cin >> tmp;
//		a = tmp;
//		cin >> tmp;
//		b = tmp;
//		cin >> tmp;
//		c = tmp;
//		long long int tmpret = 0;
//		long long int numofyoupair = min(min(a, c), b);
//		tmpret += (numofyoupair * 2);
//		b -= numofyoupair;
//
//		if (b == 2)
//		{
//			tmpret += 1;
//		}
//		else if (b > 2)
//		{
//			b--;
//			tmpret += b;
//		}
//		ret[ret.size() - numofask - 1] = tmpret;
//	}
//	for (auto& num : ret)
//	{
//		cout << num << endl;
//	}
//
//	return 0;
//}

//int main()
//{
//    int upanddown[4] = { 0, 0, -1, 1 };
//    int leftandright[4] = { -1, 1, 0, 0 };
//    bool vis[1010][1010] = { false };
//    int n = grid.size();
//    int m = grid[0].size();
//    queue<pair<int, int>> findtwoq;
//    for (int i = 0; i < n; i++) {
//        for (int j = 0; j < m; j++) {
//            if (grid[i][j] == 2) {
//                findtwoq.push({ i, j });
//            }
//        }
//    }
//
//    int ret = 0;
//    while (findtwoq.size()) {
//        int sz = findtwoq.size();
//        ret++;
//        while (sz--) {
//            auto [a, b] = findtwoq.front();
//            findtwoq.pop();
//            for (int i = 0; i < 4; i++) {
//                int x = a + upanddown[i], y = b + leftandright[i];
//                if (x >= 0 && x < n && y >= 0 && y < m && grid[x][y] == 1 && !vis[x][y]) {
//                    vis[x][y] = true;
//                    findtwoq.push({ x, y });
//                }
//            }
//        }
//    }
//
//    for (int i = 0; i < n; i++) {
//        for (int j = 0; j < m; j++) {
//            if (grid[i][j] == 1 && vis[i][j] == false) {
//                return -1;
//            }
//        }
//    }
//    return ret - 1
//}

int main()
{
    int k = 0;
    int count = n;
    bool vis[5050] = { false };
    while (count != 1)
    {
        for (int i = 0; i < m - 1; i++)
        {
            while (vis[(k + 1) % n])
            {
                k = (k + 1) % n;
            }
            k = (k + 1) % n;
        }
        vis[k] = true;
        count--;
        while (vis[k])
        {
            k = (k + 1) % n;
        }
    }

    return k;
}
